import { Grid, Typography } from '@mui/material'; import { Box, Container } from '@mui/system'; import { dehydrate, QueryClient } from '@tanstack/react-query'; import Image from 'next/image'; import { useRouter } from 'next/router'; import React from 'react'; import GridItem from '../../components/grid-item/GridItem'; import Loader from '../../components/loader/Loader'; import ProductCard from '../../components/product-card/ProductCard'; import TabContent from '../../components/tab-content/TabContent'; import { useFetchSingleProduct } from '../../hooks/useFetchProductData'; import { getProductData } from '../../requests/products/producDataRequest'; import { useStore, useStoreUpdate } from '../../store/cart-context'; const SingleProduct = () => { const { addCartValue } = useStoreUpdate(); const { cartStorage } = useStore(); const router = useRouter(); const { customId } = router.query; const { data, isLoading } = useFetchSingleProduct(customId); const addProductToCart = (quantity) => addCartValue(data.product, quantity); const inCart = cartStorage?.some( (item) => item.product.customID === data?.product.customID ) ? true : false; if (isLoading) { return ; } return ( {data.product.name} product Similar Products You May Like {data.similarProducts.map((product) => ( ))} ); }; export const getServerSideProps = async (context) => { const { params } = context; const { customId } = params; const queryClient = new QueryClient(); await queryClient.prefetchQuery( ['product', customId], async () => await getProductData(customId) ); return { props: { dehydratatedState: dehydrate(queryClient), }, }; }; export default SingleProduct;